package com.bstek.weixin.utils;

import com.alibaba.fastjson.JSONObject;
import com.bstek.weixin.entity.Department;
import com.bstek.weixin.entity.WeixinUser;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.util.Date;
import java.util.List;

/**
 * 组装发送 微信接口请求内容
 * @author snail
 * @date 2019年1月2日
 */
public class BodyUtil {

	/**
	*@Description  部门json体
	*@Author snail
	*@Date 2019/1/9
	*@return java.lang.String
	**/
	public static String departmentBody(Department department) throws ParseException{
		if(department!=null){
			JSONObject json= JSONObject.parseObject("{}");
			json.put("name",department.getName()); //部门名称
			json.put("parentid",department.getParentid()); //上级ID
			json.put("order",department.getOrder()); //部门顺序
			json.put("id",department.getId());//部门ID
			return json.toString();
		}
		return null;
	}

	/**
	*@Description  成员信息
	*@Author snail
	*@Date 2019/1/9
	*@return java.lang.String
	**/
	public static String userBody(WeixinUser user) {
		if(user!=null){
			JSONObject userJson= JSONObject.parseObject("{}");
			userJson.put("userid",user.getUserid()); //成员UserID
			userJson.put("name",user.getName()); //成员名称
			userJson.put("alias",user.getAlias()); //别名
			userJson.put("mobile",user.getMobile());//电话
			userJson.put("department",StringToArr(user.getDepartment())); //成员所属部门id列表,不超过20个
			userJson.put("order",StringToArr(user.getOrder())); //部门内的排序值，默认为0，成员次序以创建时间从小到大排列。数量必须和department一致
			userJson.put("position",user.getPosition()); //职务
			userJson.put("gender",user.getGender());//性别
			userJson.put("email",user.getEmail()); //邮箱
			userJson.put("is_leader_in_dept",StringToArr(user.getIsLeaderInDept()));//个数必须和department一致，表示在所在的部门内是否为上级。1表示为上级，0表示非上级
			userJson.put("avatar_mediaid",user.getAvatarMediaId()); //成员头像的mediaid，通过素材管理接口上传图片获得的mediaid
			userJson.put("telephone",user.getTelephone()); //座机
			userJson.put("enable",user.getEnable()); //启用/禁用成员。1表示启用成员，0表示禁用成员
			userJson.put("extattr",null);//自定义字段
			userJson.put("to_invite",null);//是否邀请该成员使用企业微信
			userJson.put("external_profile",null);//成员对外属性
			userJson.put("external_position",null);//对外职务
			return userJson.toString();
		}
		return null;
	}

	/**
	*@Description  打卡信息
	*@Author snail
	*@Date 2019/1/9
	*@return java.lang.String
	**/
	public static String checkinBody(int checkinType,Date startDate, Date endDate, String[] users)
			throws ParseException {
		if(startDate!=null&&endDate!=null&&users!=null&&users.length>0){
			//时分秒的转换
			Date startDate1=DateUtil.getDate("yyyyMMdd HH:mm:ss",
					DateUtil.getDateStr("yyyyMMdd",startDate)+" 00:00:00");
			Date endDate1=DateUtil.getDate("yyyyMMdd HH:mm:ss",
					DateUtil.getDateStr("yyyyMMdd",endDate)+" 23:59:59");
			//
			JSONObject json= JSONObject.parseObject("{}");
			json.put("opencheckindatatype",checkinType); //打卡类型。1：上下班打卡；2：外出打卡；3：全部打卡
			json.put("starttime",startDate1.getTime()/1000); //获取打卡记录的开始时间 Unix时间戳
			json.put("endtime",endDate1.getTime()/1000); //获取打卡记录的结束时间 Unix时间戳
			json.put("useridlist",users);//需要获取打卡记录的用户列表
			return json.toString();
		}
		return null;
	}

	/**
	*@Description  审批信息
	*@Author snail
	*@Date 2019/1/9
	*@return java.lang.String
	**/
	public static String approvalBody() throws ParseException{
		Date startDate=DateUtil.getDate("yyyyMMdd HH:mm:ss", "20181214 00:00:00");
		Date endDate=DateUtil.getDate("yyyyMMdd HH:mm:ss", "20181216 00:00:00");
		String approval="{"+ 
				"\"starttime\": "+startDate.getTime()+","+
				"\"endtime\": "+endDate.getTime()+","+
				"\"next_spnum\": "+
				"}";
		return approval;
	}

	public static int[] StringToArr(String arg){
		if(StringUtils.hasText(arg)){
			String str[]=arg.split(",");
			int[] result=new int[str.length];
			for (int i = 0; i <str.length ; i++) {
				String strValue=str[i];
				if(StringUtils.hasText(strValue)){
					int intValue=Integer.parseInt(strValue);
					result[i]=intValue;
				}
			}
			return result;
		}
		return null;
	}

	
	public static void main(String[] args) throws ParseException {
		BodyUtil body=new BodyUtil();
		int arr[]=body.StringToArr("1,2,3,4");
		System.out.println(arr[1]);
	}
	
}
